package br.com.pontoe.model;

import java.sql.SQLException;

import br.com.pontoe.controller.exceptions.FuncionarioInvalidoException;
import br.com.pontoe.controller.exceptions.FuncionarioNaoAutorizadoException;
import br.com.pontoe.model.entidades.Funcionario;
import br.com.pontoe.model.entidades.TipoPermissao;
import br.com.pontoe.model.persistencia.FuncionarioDAO;
import br.com.pontoe.util.ExceptionUtil;

/**
 * 
 * @author Cleison
 * @since 22/05/2010
 */
public class Autenticador {
	
	private static Autenticador instance;
	private FuncionarioDAO daoFuncionario;

	private Autenticador()
	{
		daoFuncionario = new FuncionarioDAO();
	}
	
	public static Autenticador getInstance() {
		if (instance == null){
			instance = new Autenticador();
		}
		return instance;
	}
	
	
	public Funcionario validarLogin(int matricula, int senha) throws FuncionarioNaoAutorizadoException, FuncionarioInvalidoException
	{
		Funcionario retorno = null;
		
		try {
			Funcionario funcCadastrado = daoFuncionario.localizarMatri(matricula);
			
			if((funcCadastrado == null) || (funcCadastrado.getSenha() != senha)) {
				throw new FuncionarioInvalidoException();
			}
			else if(funcCadastrado.getCargo().getTpPermissao() == TipoPermissao.FUNCIONARIO) {
				throw new FuncionarioNaoAutorizadoException();
			}
			else {
				retorno = funcCadastrado;
			}
		}
		catch(SQLException sqlEx) {
			ExceptionUtil.tratarExcecao(sqlEx);
		}
		return retorno;
	}
}
